package cn.edu.gzhu.workOrderManagement.pojo.dto.workOrder;

import cn.edu.gzhu.workOrderManagement.enumeration.WorkOrderProcessingStatusEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;


@AllArgsConstructor
@Data
@NoArgsConstructor
@Builder
public class WorkOrderListDto {

    /**
     *所属工单，使用WorkOrderTypeConstant，普通工单、重诉工单、材料工单
     */
    private String type;
    /**
     * 工单类型 协商工单、投诉工单、绿通工单、核实工单
     */
    private String workOrderCategory;
    /**
     * 跟进状态,使用WorkOrderFollowStatus
     */
    private String followStatus;
    /**
     * 工单预警级别，使用WorkOrderAlertLevelConstant
     */
    private Integer alertLevel;
    /**
     * 分公司负责人，用户输入
     */
    private String branchLeader;
    /**
     * 归属分公司
     */
    private String branchName;
    /**
     * 归属组别,用户输入
     */
    private Integer teamId;
    /**
     * 归属组员，用户输入
     */
    private String teamMember;

    /**
     * 工单状态
     */
    private WorkOrderProcessingStatusEnum processingStatus;
    /**
     * 手别,用户输入
     */
    private String manualType;

    /**
     *工单重复次数
     */
    private Integer repeatTime;
    /**
     * 委托方
     */
    private String delegator;




    /**
     * 工单请求者，用户输入
     */
    private String requestUser;
    /**
     * 客户号码
     */
    private String clientNumber;
    /**
     * 工单请求者的身份证，用户输入
     */
    private String requestIdCard;

    /**
     * 逻辑卡号，用户输入
     */
    private String logicalCardNumber;

    /**
     * 案件号，用户输入
     */
    private String caseNumber;
    /**
     * 类别，用户输入
     */
    private String category;

    /**
     * 是否为监管投诉，用户输入
     */
    private Boolean isRegulatoryComplaint;
    /**
     * 经办人,用户输入
     */
    private String handler;

    /**
     * 委案批次,用户输入
     */
    private String caseBatch;
    /**
     * 工单标题
     */
    private String title;

    /**
     * 是否有敏感字眼
     */
    private Boolean isSensitive;

    /**
     * 是否转单
     */
    private Boolean isReassignment;
    /**
     * 客户手机号
     */
    private String phoneNumber;
    /**
     * 投诉号码
     */
    private String complaintNumber;

    /**
     * 是否重诉工单
     */
    private Boolean isKeyComplaint;

    /**
     * 组名
     */
    private String teamName;

    /**
     * 创建时间开始
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate createTimeStart;

    /**
     * 创建时间结束
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate createTimeEnd;

    /**
     * 更新时间开始
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate updateTimeStart;

    /**
     * 更新时间结束
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate updateTimeEnd;
    /**
     * 工单实际结束时间开始
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate endTimeStart;
    /**
     * 工单实际结束时间结束
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate endTimeEnd;

    /**
     * 工单预期结束时间开始
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate expectedTimeStart;

    /**
     * 工单预期结束时间结束
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate expectedTimeEnd;

    /**
     * 开始页数
     */
    @NotNull
    @Min(value = 1)
    private Integer startPage;

    /**
     * 页面记录数
     */
    @NotNull
    @Min(value = 1)
    @Max(value = 200)
    private Integer pageSize;
}
